package com.project.mapper;

import com.project.bean.ProjectBean;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;

public interface IProjectMapper {
    @Mapper
    /** 外连接来
     * 按规则模糊查询所有工程
     * @param name 工程名
     * @param status 工程状态
     * @param rule 排序规则
     * @return 工程集合
     */
    public List<ProjectBean> findByItem(@Param("name")String name,
                                        @Param("status")String status,
                                        @Param("rule")String rule);

    /**
     * 添加工程
     * @param projectBean 工程对象
     */
    @Insert("insert into t_manager(m_name,m_clientName,m_startMoney,m_startDate,m_endDate,m_status)values(#{name},#{clientName},#{startMoney},#{startDate},#{deliveryDate},#{status})")
    public void add(ProjectBean projectBean);

    /**startDate
     * 以及员工在该项目的开始时间和结束时间
     * @param id
     * @return
     */
    @Select("SELECT * FROM t_manager p JOIN t_em_ma pr ON pr.`pk_em_maId` = p.`pk_mangerId`JOIN t_employee e ON e.`pk_emId`= pr.`fk_emId` AND pk_em_maId =#{id};")
    @ResultMap("PMap")
    public ProjectBean findById(int id);

    public int countAll(int id);

    /**
     * 查询所有未完成项目,同时统计每个项目参与人数，交付日期
     * @return 项目集合
     */
    @Select("SELECT *,COUNT(fk_emId) num FROM t_manager JOIN  t_em_ma ON pk_mangerId= fk_mangerId  WHERE m_status ='开发中' GROUP BY pk_em_maId")
    @ResultMap("PMap")
    public List<ProjectBean> findByFinish();

    /**
     * 项目交付使用
     * 该项目状态修改为交付使用
     * 该项目正在进行的项目进度 完成时间为 未完成 完成时间修改为当前时间
     * @param id 项目id
     */
    public void   finishProject(@Param("id") Integer id,
                                @Param("nowDate") LocalDate nowDate);
}
